package com.social.socialservice.dal;

import com.social.socialservice.idal.IPostDAL;
import com.social.socialservice.model.NotifyInfo;
import com.social.socialservice.model.PostInfo;
import com.social.socialservice.unit.Pager;
import com.social.socialservice.unit.PagerData;
import com.social.socialservice.unit.Response;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;

/**
 * 用户贴文接口实现层
 */
@Service
public class PostDAL {
    @Autowired
    IPostDAL iPostDAL;

    @Autowired
    UserDAL userDAL;

    //消息模块
    @Autowired
    NotifyDAL notifyDAL;

    /**
     * 用户发布帖子
     * 嵌入转发功能，增加判断zf_parent_id大于0则发布内容为转发
     * 针对post_id=zf_parent_id的帖子转发数+1
     */
    public boolean addPost(PostInfo postInfo) {

        if (postInfo.getZf_quick() == null) {
            postInfo.setZf_quick(0);
        }
        if (postInfo.getZf_parent_id() == null) {
            postInfo.setZf_parent_id(0);
        }


        //1. 转发帖子
        //如果zf_parent_id大于0则为转发
        if (postInfo.getZf_parent_id() > 0) {
            //增加父post的转发数量
            PostInfo pInfo = new PostInfo();
            pInfo.setPost_id(postInfo.getZf_parent_id());

            if (iPostDAL.addPost(postInfo) > 0) {
                //转发帖子发送消息
                NotifyInfo nInfo = new NotifyInfo();
                nInfo.setCurrent_user_id(postInfo.getZf_user_id());
                nInfo.setOpr_user_id(postInfo.getUser_id());
                nInfo.setPost_id(postInfo.getZf_parent_id());
                nInfo.setPost_content(postInfo.getPost_content());
                nInfo.setIs_quote(1);
                //执行转发消息
                notifyDAL.addNotify(nInfo);
                //更新转发数量
                updateZFCountsByPostId(pInfo);
                return true;
            } else {
                return false;
            }
        }
        //2. 回复帖子
        //如果pl_parent_id大于0则为评论
        if (postInfo.getPl_parent_id() > 0) {
            PostInfo pInfo = new PostInfo();
            pInfo.setPost_id(postInfo.getPl_parent_id());

            if (iPostDAL.addCommentPost(postInfo) > 0) {
                //评论发送消息
                NotifyInfo nInfo = new NotifyInfo();
                nInfo.setCurrent_user_id(postInfo.getReply_user_id());
                nInfo.setOpr_user_id(postInfo.getUser_id());
                nInfo.setPost_id(postInfo.getPl_parent_id());
                nInfo.setPost_content(postInfo.getPost_content());
                nInfo.setIs_reply(1);
                //执行转发消息
                notifyDAL.addNotify(nInfo);
                //更新评论数量
                updatePLCountsByPostId(pInfo);
                return true;
            } else {
                return false;
            }
        }
        //3. 普通发帖
        if (iPostDAL.addPost(postInfo) > 0) {
            return true;
        } else {
            return false;
        }
    }

    //添加转发
    public boolean addQuotePost(PostInfo postInfo) {
        if (iPostDAL.addPost(postInfo) > 0) {
            //如果zf_parent_id大于0则为转发
            if (postInfo.getZf_parent_id() > 0) {
                //增加父post的转发数量
                PostInfo pInfo = new PostInfo();
                pInfo.setPost_id(postInfo.getZf_parent_id());
                //更新转发数量
                updateZFCountsByPostId(pInfo);
//                addZFCounts(pInfo);
            }
            //如果pl_parent_id大于0则为评论
//            if(postInfo.getPl_parent_id()>0){
//                //增加父post评论数量，并设置回复user_id和username
//                PostInfo pInfo=new PostInfo();
//                pInfo.setPost_id(postInfo.getPl_parent_id());
//                pInfo.setReply_user_id(postInfo.getUser_id());
//                pInfo.setReply_user_account(postInfo.getUsername());
//                //执行添加评论方法
//            }

            return true;
        } else {
            return false;
        }
    }

    /**
     * 加载帖子 测试功能
     */
    public Response getPostData() {
        return new Response(200, "加载帖子数据", iPostDAL.getPostData());
    }

    /************************加载推荐贴文列表*****************************
     * 加载推荐 贴文
     * 使用分页功能
     */
    private List<PostInfo> getForYouPostDataByMapper(Pager pager) {
        Integer currentPage = pager.getCurrentPage();
        Integer startIndex = (currentPage - 1) * pager.getPageSize();
        pager.setStartIndex(startIndex);
        return iPostDAL.getForYouPostDataByMapper(pager);
    }

    /**
     * 加载推荐 贴文
     * 计算分页数据总数
     */
    private Integer getForYouPostDataTotalCounts(Pager pager) {
        return iPostDAL.getForYouPostDataTotalCounts(pager);
    }

    /**
     * 加载推荐推文
     * 计算分页总数
     */
    private Integer getForYouPostPageTotal(Pager pager) {
        Integer forYouPostTotalCounts = getForYouPostDataTotalCounts(pager);
        Integer pageTotal = 1;
        //数据总条数除以pageSize，如果有余数也不能整除，页数+1
        //可以整除，页数=数据总条/pageSize
        pageTotal = forYouPostTotalCounts / pager.getPageSize();
        if (forYouPostTotalCounts % pager.getPageSize() > 0) {
            pageTotal = pageTotal + 1;
        }
        return pageTotal;
    }

    /**
     * 加载推荐推文分页数据封装
     */
    public Response getForYouPostData(Pager pager) {
        //调用封装的好方法进行数据装载
        PagerData pagerData = new PagerData();
        pagerData.setData(getForYouPostDataByMapper(pager));
        pagerData.setPageTotal(getForYouPostPageTotal(pager));
        return new Response(200, "加载数据成功", pagerData);
    }

    /**
     **************************加载推荐贴文列表结束*****************************
     */


    /******************************加载指定用户贴文列表开始***********************
     * 加载指定用户贴文
     * 使用分页功能
     */
    private List<PostInfo> getUserPostDataByMapperAndUserId(Pager pager) {
        Integer currentPage = pager.getCurrentPage();
        Integer startIndex = (currentPage - 1) * pager.getPageSize();
        pager.setStartIndex(startIndex);
        return iPostDAL.getUserPostDataByMapperAndUserId(pager);
    }

    /**
     * 加载指定用户贴文
     * 计算分页数据总数
     */
    private Integer getUserPostDataTotalCounts(Pager pager) {
        return iPostDAL.getUserPostDataTotalCounts(pager);
    }

    /**
     * 加载指定用户贴文
     * 计算分页总数
     */
    private Integer getUserPostPageTotal(Pager pager) {
        Integer userPostTotalCounts = getUserPostDataTotalCounts(pager);
        Integer pageTotal = 1;
        //数据总条数除以pageSize，如果有余数也不能整除，页数+1
        //可以整除，页数=数据总条/pageSize
        pageTotal = userPostTotalCounts / pager.getPageSize();
        if (userPostTotalCounts % pager.getPageSize() > 0) {
            pageTotal = pageTotal + 1;
        }
        return pageTotal;
    }

    /**
     * 加载指定用户贴文分页数据封装
     */
    public Response getUserPostDataByUserId(Pager pager) {
        //调用封装的好方法进行数据装载
        PagerData pagerData = new PagerData();
        pagerData.setData(getUserPostDataByMapperAndUserId(pager));
        pagerData.setPageTotal(getUserPostPageTotal(pager));
        return new Response(200, "加载数据成功", pagerData);
    }

    /**
     **************************加载指定用户贴文列表结束*****************************
     */

    /**
     * 查看帖子
     *
     * @param
     */
    public Response getPostInfoByPostId(PostInfo postInfo) {
        PostInfo pInfo = iPostDAL.getPostInfoByPostId(postInfo);
        if (pInfo != null) {
            return new Response(200, "查询成功", pInfo);
        } else {
            return new Response(203, "未查询到相关内容", null);
        }
    }

    /**
     * 查询当前登录用户对所浏览器帖子id是否进行了转发和喜欢操作，如果有数据则查询出来到前端进行
     * 样式切换和功能切换
     */
    public Response getPostRelationShipByPostIdAndCurrentUserId(PostInfo postInfo) {
        //获取post被转发、点赞的关系信息
        PostInfo pInfo = iPostDAL.getPostRelationShipByPostIdAndCurrentUserId(postInfo);
        if (pInfo != null) {
            return new Response(200, "查询成功", pInfo);
        } else {
            return new Response(203, "未查询到相关内容", null);
        }
    }

    /**
     * 点赞操作
     * 先查询user_id和post_id在关系表中是否存在
     * 存在则修改喜欢为1
     * 不存在则添加该条关系数据并设置喜欢为1
     */
    public Response addPressXH(PostInfo postInfo) {
        //判断是否有关系数据
        if (isExistedPostRelationZFANDXH(postInfo)) {
            //存在则修改
            if (iPostDAL.updatePostRelationXH(postInfo) > 0) {
                //更新点赞数量
                updateXHCountsByPostId(postInfo);
                //添加用户消息通知
                NotifyInfo nInfo = new NotifyInfo();
                nInfo.setOpr_user_id(postInfo.getOpr_user_id());
                nInfo.setCurrent_user_id(postInfo.getCurrent_user_id());
                nInfo.setPost_id(postInfo.getPost_id());
                nInfo.setIs_liked(1);
                notifyDAL.addNotify(nInfo);

                return new Response(200, "点赞成功", null);
            } else {
                return new Response(203, "点赞失败", null);
            }
        } else {
            //不存在则添加
            if (iPostDAL.addPostRelationXH(postInfo) > 0) {
                //更新点赞数量
                updateXHCountsByPostId(postInfo);
                //添加用户消息通知
                NotifyInfo nInfo = new NotifyInfo();
                nInfo.setOpr_user_id(postInfo.getOpr_user_id());
                nInfo.setCurrent_user_id(postInfo.getCurrent_user_id());
                nInfo.setPost_id(postInfo.getPost_id());
                nInfo.setIs_liked(1);
                notifyDAL.addNotify(nInfo);

                return new Response(200, "点赞成功", null);
            } else {
                return new Response(203, "点赞失败", null);
            }
        }
    }

    private boolean isExistedPostRelationZFANDXH(PostInfo postInfo) {
        if (iPostDAL.isExistedPostRelationZFANDXH(postInfo) > 0) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * 取消点赞操作
     * 先查询该条关系的转发否为1，为1则修改喜欢为0
     * 转发为0，则删除该条数据
     */
    public Response cancelPressXH(PostInfo postInfo) {
        //判断该条关系的转发是否为1
        if (getPostRelationZF(postInfo) > 0) {
            //关系为1 则修改
            if (iPostDAL.updatePostRelationXH(postInfo) > 0) {
                //更新点赞数量
                updateXHCountsByPostId(postInfo);
                return new Response(200, "取消点赞成功", null);
            } else {
                updateXHCountsByPostId(postInfo);
                return new Response(203, "取消点赞失败", null);
            }
        } else {
            if (iPostDAL.delPostRelation(postInfo) > 0) {
                //更新点赞数量
                updateXHCountsByPostId(postInfo);
                return new Response(200, "取消点赞", null);
            } else {
                return new Response(203, "取消点赞失败", null);
            }
        }
    }

    /**
     * 取出关系数据中转发字段
     */
    private Integer getPostRelationZF(PostInfo postInfo) {
        return iPostDAL.getPostRelationZF(postInfo);
    }

    /**
     * 帖子访问量
     * 每访问一次+1
     */
    public Response addFWCounts(PostInfo postInfo) {
        if (iPostDAL.addFWCounts(postInfo) > 0) {
            return new Response(200, "增加访问", null);
        } else {
            return new Response(203, "增加访问失败", null);
        }
    }


    /**
     * 快转
     * 先查询user_id和post_id在关系表中是否存在
     * 存在则修改转发为1
     * 不存在则添加该条关系数据并设置转发为1
     * 帖子转发量+1
     */
    public Response addQuickZF(PostInfo postInfo) {
        //判断是否有关系数据
        if (isExistedPostRelationZFANDXH(postInfo)) {
            //存在则修改关系表
            if (iPostDAL.updatePostRelationZF(postInfo) > 0) {
                return new Response(200, "快转成功", null);
            } else {
                return new Response(203, "快转失败", null);
            }
        } else {
            //不存在则添加
            if (iPostDAL.addPostRelationZF(postInfo) > 0) {
                return new Response(200, "快转成功", null);
            } else {
                return new Response(203, "快转失败", null);
            }
        }
    }

    /**
     * 快转
     * 先查询该条关系的喜欢是否为1，为1则修改转发为0
     * 喜欢为0，则删除该条数据
     * 转发量-1
     */
    public Response cancelQuickZF(PostInfo postInfo) {
        //判断该条关系的喜欢是否为1
        if (getPostRelationZF(postInfo) > 0) {
            //关系为1 则修改为0
            if (iPostDAL.updatePostRelationCancelZF(postInfo) > 0) {
                //删除快转帖子
                delQuickQuotePost(postInfo);
                //更新转发数量
                updateZFCountsByPostId(postInfo);
                return new Response(200, "取消快转", null);
            } else {
                return new Response(203, "取消快转失败", null);
            }
        } else {
            if (iPostDAL.delPostRelation(postInfo) > 0) {
                //删除快转帖子
                delQuickQuotePost(postInfo);
                //更新转发数量
                updateZFCountsByPostId(postInfo);
                return new Response(200, "取消快转", null);
            } else {
                return new Response(203, "取消快转失败", null);
            }
        }
    }

    /**
     * 取出关系数据中喜欢点赞字段
     */
    private Integer getPostRelationXH(PostInfo postInfo) {
        return iPostDAL.getPostRelationXH(postInfo);
    }

    /**
     * 删除关系数据
     * 通过zf_parent_id和user_id,以及zf_quick字段，查询post_id
     * 然后删除
     */
    public boolean delQuickQuotePost(PostInfo postInfo) {

        if (iPostDAL.delQuickQuotePost(postInfo) > 0) {
            System.out.println("删除快转");
            System.out.println("帖子id" + postInfo.getPost_id());
//            System.out.println(postInfo);
            return true;
        } else {
            return false;
        }
    }

    /**
     * 评论量
     * 每回复一次+1
     */
    public Integer addCommentCounts(PostInfo postInfo) {
        return iPostDAL.addCommentCounts(postInfo);
    }

    /**
     * 通过pl_parant_id查询评论列表，根据时间排序
     * 分页查询功能
     */
    private List<PostInfo> getCommentDataListPager(Pager pager) {
        Integer currentPage = pager.getCurrentPage();
        Integer startIndex = (currentPage - 1) * pager.getPageSize();
        pager.setStartIndex(startIndex);
        return iPostDAL.getCommentDataListPager(pager);
    }

    /**
     * 通过pl_parant_id查询回复数量
     */
    private Integer getCommentDataListTotalCounts(Pager pager) {
        return iPostDAL.getCommentDataListTotalCounts(pager);
    }

    /**
     * 回复列表计算分页
     */
    private Integer getCommentPageTotal(Pager pager) {
        Integer userPostTotalCounts = getCommentDataListTotalCounts(pager);
        Integer pageTotal = 1;
        //数据总条数除以pageSize，如果有余数也不能整除，页数+1
        //可以整除，页数=数据总条/pageSize
        pageTotal = userPostTotalCounts / pager.getPageSize();
        if (userPostTotalCounts % pager.getPageSize() > 0) {
            pageTotal = pageTotal + 1;
        }
        return pageTotal;
    }

    /**
     * 加载回复列表数据
     */
    public Response getUserCommentDataMapper(Pager pager) {
        //调用封装的好方法进行数据装载
        PagerData pagerData = new PagerData();
        pagerData.setData(getCommentDataListPager(pager));
        pagerData.setPageTotal(getCommentPageTotal(pager));
        return new Response(200, "加载数据成功", pagerData);
    }

    /***********************************************************************
     * 获取用户回复和转发数据分页
     */
    private List<PostInfo> getReplyPostDataMapperByUserId(Pager pager) {
        Integer currentPage = pager.getCurrentPage();
        Integer startIndex = (currentPage - 1) * pager.getPageSize();
        pager.setStartIndex(startIndex);
        return iPostDAL.getReplyPostDataMapperByUserId(pager);
    }

    /**
     * 根据用户id
     * 获取回复和转发分页数据总数
     */
    private Integer getReplyPostDataMapperTotalCounts(Pager pager) {
        return iPostDAL.getReplyPostDataMapperTotalCounts(pager);
    }

    /**
     * 获取用户回复和转发数据分页
     * 计算分页
     */
    private Integer getReplyPostDataPageTotal(Pager pager) {
        Integer userPostTotalCounts = getReplyPostDataMapperTotalCounts(pager);
        Integer pageTotal = 1;
        //数据总条数除以pageSize，如果有余数也不能整除，页数+1
        //可以整除，页数=数据总条/pageSize
        pageTotal = userPostTotalCounts / pager.getPageSize();
        if (userPostTotalCounts % pager.getPageSize() > 0) {
            pageTotal = pageTotal + 1;
        }
        return pageTotal;
    }

    /**
     * 获取用户回复和转发数据分页
     * 装载数据
     */
    public Response getUserReplyPostDataMapperByUserId(Pager pager) {
        //调用封装的好方法进行数据装载
        PagerData pagerData = new PagerData();
        pagerData.setData(getReplyPostDataMapperByUserId(pager));
        pagerData.setPageTotal(getReplyPostDataPageTotal(pager));
        return new Response(200, "加载数据成功", pagerData);
    }

    /*************************************************************
     * 获取用户喜欢的分页数据
     */
    private List<PostInfo> getLikePostDataMapperByUserId(Pager pager) {
        Integer currentPage = pager.getCurrentPage();
        Integer startIndex = (currentPage - 1) * pager.getPageSize();
        pager.setStartIndex(startIndex);
        return iPostDAL.getLikePostDataMapperByUserId(pager);
    }

    /**
     * 获取用户喜欢的分页数据总数
     */
    private Integer getLikePostDataMapperTotalCounts(Pager pager) {
        return iPostDAL.getLikePostDataMapperTotalCounts(pager);
    }

    /**
     * 获取用户喜欢的分页数据
     * 计算分页
     */
    private Integer getLikePostDataPageTotal(Pager pager) {
        Integer userPostTotalCounts = getLikePostDataMapperTotalCounts(pager);
        Integer pageTotal = 1;
        //数据总条数除以pageSize，如果有余数也不能整除，页数+1
        //可以整除，页数=数据总条/pageSize
        pageTotal = userPostTotalCounts / pager.getPageSize();
        if (userPostTotalCounts % pager.getPageSize() > 0) {
            pageTotal = pageTotal + 1;
        }
        return pageTotal;
    }

    /**
     * 获取用户喜欢的分页数据
     * 装载数据
     */
    public Response getUserLikePostDataMapperByUserId(Pager pager) {
        //调用封装的好方法进行数据装载
        PagerData pagerData = new PagerData();
        pagerData.setData(getLikePostDataMapperByUserId(pager));
        pagerData.setPageTotal(getLikePostDataPageTotal(pager));
        return new Response(200, "加载数据成功", pagerData);
    }

    /*************************************************************
     * 获取用户多媒体数据分页
     * 包括图片和视频
     */
    private List<PostInfo> getMediaPostDataMapperByUserId(Pager pager) {
        Integer currentPage = pager.getCurrentPage();
        Integer startIndex = (currentPage - 1) * pager.getPageSize();
        pager.setStartIndex(startIndex);
        return iPostDAL.getMediaPostDataMapperByUserId(pager);
    }

    /**
     * 获取用户多媒体数据分页总数
     * 包括图片和视频
     */
    private Integer getMediaPostDataMapperTotalCounts(Pager pager) {
        return iPostDAL.getMediaPostDataMapperTotalCounts(pager);
    }

    /**
     * 获取用户多媒体数据分页
     * 包括图片和视频
     * 计算分页
     */
    private Integer getMediaPostDataPageTotal(Pager pager) {
        Integer userPostTotalCounts = getMediaPostDataMapperTotalCounts(pager);
        Integer pageTotal = 1;
        //数据总条数除以pageSize，如果有余数也不能整除，页数+1
        //可以整除，页数=数据总条/pageSize
        pageTotal = userPostTotalCounts / pager.getPageSize();
        if (userPostTotalCounts % pager.getPageSize() > 0) {
            pageTotal = pageTotal + 1;
        }
        return pageTotal;
    }

    /**
     * 获取用户多媒体数据分页总数
     * 包括图片和视频
     * 装载数据
     */
    public Response getUserMediaPostDataMapperByUserId(Pager pager) {
        //调用封装的好方法进行数据装载
        PagerData pagerData = new PagerData();
        pagerData.setData(getMediaPostDataMapperByUserId(pager));
        pagerData.setPageTotal(getMediaPostDataPageTotal(pager));
        return new Response(200, "加载数据成功", pagerData);
    }

    /*******************************************************
     *  查询带搜索条件的分页数据
     */
    private List<PostInfo> getPostSearchMapperByQuery(Pager pager) {
        Integer currentPage = pager.getCurrentPage();
        Integer startIndex = (currentPage - 1) * pager.getPageSize();
        pager.setStartIndex(startIndex);
        return iPostDAL.getPostSearchMapperByQuery(pager);
    }

    /**
     * 查询带搜索条件的分页数据总条数
     */
    private Integer getPostSearchMapperCountByQuery(Pager pager) {
        return iPostDAL.getPostSearchMapperCountByQuery(pager);
    }

    /**
     * 查询带搜索条件的分页数据总条数
     * 计算分页
     */
    private Integer getPostSearchDataPageTotal(Pager pager) {
        Integer userPostTotalCounts = getPostSearchMapperCountByQuery(pager);
        Integer pageTotal = 1;
        //数据总条数除以pageSize，如果有余数也不能整除，页数+1
        //可以整除，页数=数据总条/pageSize
        pageTotal = userPostTotalCounts / pager.getPageSize();
        if (userPostTotalCounts % pager.getPageSize() > 0) {
            pageTotal = pageTotal + 1;
        }
        return pageTotal;
    }

    /**
     * 查询带搜索条件的分页数据
     * 装载数据
     */
    public Response getPostSearchDataMapperByQuery(Pager pager) {
        //调用封装的好方法进行数据装载
        PagerData pagerData = new PagerData();
        List<PostInfo> plist = getPostSearchMapperByQuery(pager);
        pagerData.setData(plist);
        pagerData.setPageTotal(getPostSearchDataPageTotal(pager));
        if (plist.isEmpty()) {
            return new Response(203, "数据为空", null);
        }
        return new Response(200, "加载数据成功", pagerData);
    }

    /**
     * 获取当前用户关注的人的帖子列表
     * 1.先获取当前用户关注的人列表，并转换字符串
     * 2.用条件语句 in 来查询
     */
    private List<PostInfo> getPostDataMapperByCurrentUserFoUserIds(Pager pager) {
        Integer currentPage = pager.getCurrentPage();
        Integer startIndex = (currentPage - 1) * pager.getPageSize();
        pager.setStartIndex(startIndex);
        return iPostDAL.getPostDataMapperByCurrentUserFoUserIds(pager);
    }

    /**
     * 获取当前用户关注的人的帖子总数量
     * 用于计算分页
     */
    private Integer getPostDataCountByCurrentUserFoUserIds(Pager pager) {
        return iPostDAL.getPostDataCountByCurrentUserFoUserIds(pager);
    }

    /**
     * 获取当前用户关注的人的帖子分页
     * 计算分页
     */
    private Integer getPostDataCountByCurrentUserFoUserIdsPageTotal(Pager pager) {
        Integer userPostTotalCounts = getPostDataCountByCurrentUserFoUserIds(pager);
        Integer pageTotal = 1;
        //数据总条数除以pageSize，如果有余数也不能整除，页数+1
        //可以整除，页数=数据总条/pageSize
        pageTotal = userPostTotalCounts / pager.getPageSize();
        if (userPostTotalCounts % pager.getPageSize() > 0) {
            pageTotal = pageTotal + 1;
        }
        return pageTotal;
    }

    /**
     * 获取当前用户关注的人的帖子分页数据
     * 数据装载
     */
    public Response loadPostMapperDataByCurrentUserFoUserIds(Pager pager) {
        //将ids集合加入
        String ids = userDAL.getCurrentUserFoUserList(pager);
        pager.setIds(ids);
        if (ids == "") {
            return new Response(203, "未关注用户", null);
        }
        //调用封装的好方法进行数据装载
        PagerData pagerData = new PagerData();
        pagerData.setData(getPostDataMapperByCurrentUserFoUserIds(pager));
        pagerData.setPageTotal(getPostDataCountByCurrentUserFoUserIdsPageTotal(pager));
        return new Response(200, "加载数据成功", pagerData);
    }

    /**
     * 删除自己的帖子
     * 这里是假删除，将帖子的字段post_delete设置为1
     * 同时更新评论或转发数量
     */
    public Response delPostByUserId(PostInfo postInfo) {
        //删除功能修复正常
        if (iPostDAL.delPostByUserId(postInfo) > 0) {
            if (postInfo.getPl_parent_id() > 0) {
                postInfo.setPost_id(postInfo.getPl_parent_id());
                //更新评论数量
                updatePLCountsByPostId(postInfo);
            }
            if (postInfo.getZf_parent_id() > 0) {
                postInfo.setPost_id(postInfo.getZf_parent_id());
                //更新转发数量
                updateZFCountsByPostId(postInfo);
            }

            return new Response(200, "删除成功", null);
        } else {
            return new Response(203, "删除失败", null);
        }
    }

    /**
     * 对帖子的转发数、评论数、点赞喜欢数量统计采用存储过程
     * 避免统计错误
     * 更新评论数量
     */
    public boolean updatePLCountsByPostId(PostInfo postInfo) {
        if (iPostDAL.updatePLCountsByPostId(postInfo) > 0) {
            //更新成功
            System.out.println("更新评论数量成功");
            return true;
        } else {
            System.out.println("更新评论失败成功");
            return false;
        }
    }

    /**
     * 更新转发数量
     */
    public boolean updateZFCountsByPostId(PostInfo postInfo) {
        if (iPostDAL.updateZFCountsByPostId(postInfo) > 0) {
            //更新成功
            System.out.println("更新转发数量成功");
            return true;
        } else {
            System.out.println("更新转发失败成功");
            return false;
        }
    }

    /**
     * 更新点赞喜欢数量
     */
    public boolean updateXHCountsByPostId(PostInfo postInfo) {
        System.out.println(postInfo);
        if (iPostDAL.updateXHCountsByPostId(postInfo) > 0) {
            //更新成功
            System.out.println("更新点赞数量成功");
            return true;
        } else {
            System.out.println("更新点赞数量失败");
            return false;
        }
    }
}



